// login.js
import Toast from '@vant/weapp/toast/toast';
import WxValidate from '../../WxValidate';
import { login } from '../../utils/api-v2';

Page({
  data: {
    username: '201711010029', // 默认学号
    password: '123456',
    userType: '1' // 固定为学生类型
  },

  onLoad() {
    // 初始化表单验证规则
    this.initValidate();
  },

  // 初始化验证规则
  initValidate() {
    const rules = {
      username: {
        required: true,
        minlength: 8,      // 学号至少8位
        digits: true       // 学号必须是数字
      },
      password: {
        required: true,
        minlength: 6       // 密码至少6位
      }
    };

    const messages = {
      username: {
        required: '请输入学号',
        minlength: '学号至少8位',
        digits: '学号必须是数字'
      },
      password: {
        required: '请输入密码',
        minlength: '密码至少6位'
      }
    };

    // 创建验证实例
    this.validate = new WxValidate(rules, messages);
  },

  // 用户名输入
  onUsernameInput(e) {
    this.setData({
      username: e.detail.value || e.detail
    });
  },

  // 密码输入
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value || e.detail
    });
  },

  // 表单验证
  validateForm() {
    const { username, password } = this.data;
    
    // 使用 WxValidate 进行验证
    const isValid = this.validate.checkForm({ username, password });
    
    if (!isValid) {
      // 获取第一个错误信息
      const errors = this.validate.validationErrors();
      if (errors && errors.length > 0) {
        Toast.fail(errors[0].msg);
      }
      return false;
    }

    return true;
  },

  // 登录处理
  handleLogin() {
    // 表单验证
    if (!this.validateForm()) {
      return;
    }

    const { username, password, userType } = this.data;

    // 显示加载提示
    Toast.loading({
      message: '登录中...',
      forbidClick: true,
      duration: 0
    });

    // 调用登录接口
    login(username, password, userType)
      .then((res) => {
        Toast.clear();
        console.log('登录成功，返回数据:', res);

        // 后端使用 Cookie/Session 认证，不返回 token
        // 微信小程序会自动保存服务器返回的 Cookie，并在后续请求中自动携带
        console.log('登录成功，服务器会通过 Cookie 维持会话状态');

        // 保存用户信息
        wx.setStorageSync('userInfo', {
          username: username,
          userType: userType,
          ...res.data
        });

        Toast.success('登录成功');

        // 跳转到首页
        setTimeout(() => {
          wx.switchTab({
            url: '/pages/index/index'
          });
        }, 1500);
      })
      .catch((err) => {
        Toast.clear();
        Toast.fail(err.msg || '登录失败');
        console.error('登录失败:', err);
      });
  },

  // 忘记密码
  forgetPassword() {
    Toast('请联系管理员重置密码');
  },

  // 联系管理员
  contactAdmin() {
    wx.showModal({
      title: '联系管理员',
      content: '管理员邮箱：admin@example.com\n联系电话：123-4567-8900',
      showCancel: false,
      confirmText: '知道了'
    });
  }
});
